Make treesit--simple-indent-eval more permissive (bug#78065)
authorYuan Fu <casouri@gmail.com>
Wed, 7 May 2025 03:57:06 +0000 (20:57 -0700)
committerYuan Fu <casouri@gmail.com>
Wed, 7 May 2025 04:30:25 +0000 (21:30 -0700)
* lisp/treesit.el (treesit--simple-indent-eval): Allow EXP to be
anything, so higher-order indent presets can take anything as an
argument: t, nil, symbols, keywords, etc.

lisp/treesit.el

index a26625eca57cdcdb454b87a1c59577bffa0007d9..2b5989fcaeef8a110b47917b966b2bfb8d4ad6e1 100644 (file)
@@ -1902,14 +1902,12 @@ the function."
         ;; `functionp'.
         ((alist-get exp treesit-simple-indent-presets))
         ((functionp exp) exp)
-        ((symbolp exp)
-         (if (null exp)
-             exp
-           ;; Matchers only return lambdas, anchors only return
-           ;; integer, so we should never see a variable.
-           (signal 'treesit-indent-error
-                   (list "Couldn't find the preset corresponding to expression"
-                         exp))))
+        ;; There are higher-order presets that take arguments, like
+        ;; (nth-sibling 1 t), so it's possible for exp to be something
+        ;; other than numbers and functions.  Don't signal an error if
+        ;; exp isn't a function nor a number.  In fact, allow exp to be
+        ;; any symbol or keyword, so users can define higher-order
+        ;; presets that takes keyword or symbol as arguments.
         (t exp)))
 
 ;; This variable might seem unnecessary: why split